package com.titaniume.sync;

import java.util.concurrent.TimeUnit;

/**
 * @ProjectName: juc
 * @Package: com.titaniume.sync
 * @ClassName: Lock_8
 * @Author: huangrenfei
 * @Description:
 * @Date: 2021/11/23 09:45
 * @Version: 1.0
 */

class Phone{

    public static synchronized void sendSMS () throws Exception {
        TimeUnit.SECONDS.sleep(4);
        System.out.println("----------sendSMS");
    }

    public  synchronized void sendEmail() throws Exception {
        System.out.println("----------sendEmail");
    }

    public void  getHello(){
        System.out.println("----------getHello");
    }

}



/**
 * @Description: 8锁
 *
1 标准访问，先打印短信还是邮件
------sendSMS
------sendEmail

2 停4秒在短信方法内，先打印短信还是邮件
------sendSMS
------sendEmail

3 新增普通的hello方法，是先打短信还是hello
------getHello
------sendSMS

4 现在有两部手机，先打印短信还是邮件
------sendEmail
------sendSMS

5 两个静态同步方法，1部手机，先打印短信还是邮件
------sendSMS
------sendEmail

6 两个静态同步方法，2部手机，先打印短信还是邮件
------sendSMS
------sendEmail

7 1个静态同步方法,1个普通同步方法，1部手机，先打印短信还是邮件
------sendEmail
------sendSMS

8 1个静态同步方法,1个普通同步方法，2部手机，先打印短信还是邮件
------sendEmail
------sendSMS

 */

public class Lock_8 {

    public static void main(String[] args) {

        Phone phone = new Phone();
        Phone phone2 = new Phone();



        new Thread(()->{
            try {
                phone.sendSMS();
            } catch (Exception e) {
                e.printStackTrace();
            }
        },"AA").start();


        new Thread(()->{
            try {
//                phone.sendEmail();
                phone2.sendEmail();
//                phone.sendSMS();
            } catch (Exception e) {
                e.printStackTrace();
            }
        },"BB").start();
    }
}
